/**
 * 
 */
package info.pello.games.libgdx.pong;


/**
 * World
 * @author Pello Xabier
 * Clase que representa el mundo del juego. Un mundo compuesto
 * por paredes laterales, una pala en la parte de abajo y una pared
 * en la parte de arriba. Y una pelotilla que va y viene.
 */
public class World {

	private Pelota pelota;
	private Pala pala1;
	private Pala pala2;
	private boolean pala1win;
	private int hasPala1TheVictory=0;
	private final static int PELOTA_EN_JUEGO = 0;
	private final static int PELOTA_EN_PALA = 1;
	private final static int PELOTA_TOCA_FINAL = 2;
	private int posicion_pelota;
	
	public World(){
		initialize();
	}
	
	private void initialize () {
		pelota = new Pelota();
		pala1 = new Pala(4,0);
		pala2 = new Pala(4,14.5f);
	}
	
	/**
	 * update
	 * updates world status
	 * @param delta
	 */
	public void update () {
		
		pelota.posicion.add(pelota.direccion.x*0.05f, pelota.direccion.y*0.05f, 0);
		
		// Toca la pala de abajo
		if (pelota.posicion.x > pala1.posicion.x && pelota.posicion.x <= pala1.posicion.x + 2 &&
				pelota.posicion.y > 0 && pelota.posicion.y <=0.5) {
				
			pelota.direccion.y = pelota.velocidad;
			System.out.println("Palazo Pala de abajo : (" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala1.posicion.x +","+pala1.posicion.y +")");
			
		} 
		// Toca la pala de arriba
		if (pelota.posicion.x > pala2.posicion.x && pelota.posicion.x <= pala2.posicion.x + 2 &&
				pelota.posicion.y > 14 && pelota.posicion.y <=15) {
						
			pelota.direccion.y = -pelota.velocidad;
			System.out.println("Palazo Pala de abajo : (" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala1.posicion.x +","+pala1.posicion.y +")");
		}
			
		//choque en lado izquierdo
		if (pelota.posicion.x < 0) {
			pelota.direccion.x = pelota.velocidad;
			System.out.println("Choque izq pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala1.posicion.x +","+pala1.posicion.y +")");

		}
		//choque en lado derecho
		if (pelota.posicion.x > 10) {
			pelota.direccion.x = -pelota.velocidad;
			System.out.println("Choque dcha pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala1.posicion.x +","+pala1.posicion.y +")");
		}
		//pala1 gana, la pelota toca el techo
		if(pelota.posicion.y >= 15){
			pelota.posicion.x = 13;
			pelota.posicion.y = 13;
			pelota.direccion.y = -pelota.velocidad;	
			System.out.println("Pala 1 gana, ");
			pala1.puntos++;
		}
		if(pelota.posicion.y <= 0){
			pelota.posicion.x = 2;
			pelota.posicion.y = 2;
			pelota.direccion.y = pelota.velocidad;
			System.out.println("Pala 2 gana, ");
			pala2.puntos++;
		}
		if(pala1.puntos>=10 || pala2.puntos>=10){
			System.out.println("Partido finalizado.");
		}
	}
	/**
	 * @return the pelota
	 */
	public Pelota getPelota() {
		return pelota;
	}

	/**
	 * @param pelota the pelota to set
	 */
	public void setPelota(Pelota pelota) {
		this.pelota = pelota;
	}

	/**
	 * @return the pala1
	 */
	public Pala getPala1() {
		return pala1;
	}

	/**
	 * @param pala the pala1 to set
	 */
	public void setPala1(Pala pala) {
		this.pala1 = pala;
	}

	/**
	 * @return the pala2
	 */
	public Pala getPala2() {
		return pala2;
	}

	/**
	 * @param pala2 the pala2 to set
	 */
	public void setPala2(Pala pala2) {
		this.pala2 = pala2;
	}

	/**
	 * @return the pala1win
	 */
	public boolean getPala1win() {
		return pala1win;
	}

	/**
	 * @param pala1win the pala1win to set
	 */
	public void setPala1win(boolean pala1win) {
		this.pala1win = pala1win;
	}

}
